﻿using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Auditing;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Entities.Events.Distributed;

namespace AbpVnext_Module.Dto
{
    public class SysUserCreateDto : EntityDto<Guid>   //, IValidatableObject  //自定义局部验证
    {
        public string Test_Filed { get; set; }

        //
        // 摘要:
        //     Gets or sets the user name for this user.
        public virtual string UserName { get;  set; }

        //
        // 摘要:
        //     Gets or sets the normalized user name for this user.
        [DisableAuditing]
        public virtual string NormalizedUserName { get;  set; }

        //
        // 摘要:
        //     Gets or sets the Name for the user.
        public virtual string Name { get; set; }

        //
        // 摘要:
        //     Gets or sets the Surname for the user.
        public virtual string Surname { get; set; }

        //
        // 摘要:
        //     Gets or sets the email address for this user.
        public virtual string Email { get;  set; }

        //
        // 摘要:
        //     Gets or sets the normalized email address for this user.
        [DisableAuditing]
        public virtual string NormalizedEmail { get; set; }

        //
        // 摘要:
        //     Gets or sets a flag indicating if a user has confirmed their email address.
        //
        // 值:
        //     True if the email address has been confirmed, otherwise false.
        public virtual bool EmailConfirmed { get;  set; }

        //
        // 摘要:
        //     Gets or sets a salted and hashed representation of the password for this user.
        [DisableAuditing]
        public virtual string PasswordHash { get;  set; }

        //
        // 摘要:
        //     A random value that must change whenever a users credentials change (password
        //     changed, login removed)
        [DisableAuditing]
        public virtual string SecurityStamp { get;  set; }

        public virtual bool IsExternal { get; set; }

        //
        // 摘要:
        //     Gets or sets a telephone number for the user.
        public virtual string PhoneNumber { get;  set; }

        //
        // 摘要:
        //     Gets or sets a flag indicating if a user has confirmed their telephone address.
        //
        //
        // 值:
        //     True if the telephone number has been confirmed, otherwise false.
        public virtual bool PhoneNumberConfirmed { get;  set; }

        //
        // 摘要:
        //     Gets or sets a flag indicating if the user is active.
        public virtual bool IsActive { get;  set; }

        //
        // 摘要:
        //     Gets or sets a flag indicating if two factor authentication is enabled for this
        //     user.
        //
        // 值:
        //     True if 2fa is enabled, otherwise false.
        public virtual bool TwoFactorEnabled { get;  set; }

        //
        // 摘要:
        //     Gets or sets the date and time, in UTC, when any user lockout ends.
        //
        // 言论：
        //     A value in the past means the user is not locked out.
        public virtual DateTimeOffset? LockoutEnd { get;  set; }
    }
}
